As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
For many information handling systems, it is desired to operate the system, at acceptable performance levels, using as little power as possible in order to extend battery life, reduce heat, and/or simply to reduce power usage. To this end, in order to reduce power usage, many systems control the performance states for CPUs (central processing units) and control other power using devices within the system such as controlling fan speed for cooling fans. Prior systems have used CPU utilization parameters (and many different variants of CPU utilization parameters exist) in determining the performance state in which to operate a CPU while still providing adequate CPU speed to the system. In many systems, the operating system is entity within the system that will determine CPU utilization and then set the performance state for the CPU.
Many users, and enterprise users in particular, are increasingly struggling with the growing demands of providing enough compute cycles at the expense of power and cooling. Most enterprise users have one of two primary problems: (1) insufficient power to add new computing infrastructure, and/or (2) insufficient cooling to add new computing infrastructure. Balancing server performance dynamically to the workload, therefore, is in integral part of simplifying IT (information technology) management and easing the power and cooling challenge. To balance server performance, it is desirable to manage the performance state of the CPUs within the information handling systems being operated as part of the enterprise server and data centers.
The ACPI (Advanced Configuration and Power Interface) standard used in many information handling systems supports multiple processor power states (C0, C1, C2 . . . ) and multiple processor performance states (P0, P1 . . . Pn) for these power states. The power states and the performance states can then be used to manage the power consumed by a CPU during operation of the system. Traditionally, the operating system continuously monitors the load on the processor and puts the processor in a power state and a performance state accordingly. This existing ACPI method for CPU power management is standardized and proven to be helpful in power management. However, the operating system has very limited knowledge of the system's thermal/mechanical characteristics and also will not be able to individually control fans based on the load on specific processors in a multi processor environment.
Some information handling systems support the simultaneous operation of multiple operating systems. These operating systems can be multiple instances of the same operating system and/or multiple different operating systems. In these multiple operating system environments, a hypervisor is often used to provide an interface between the multiple operating systems and the underlying hardware of the system. A hypervisor is a virtualization layer that allows multiple operating systems to run on a host system at the same time. The hypervisor also operates to intercept power control interrupts from each operating system as each operating system may separately attempt to control performance states for the CPU without knowing the needs of the other operating systems. The hypervisor cannot effectively handle the power management, however, due to the complexity of attempting to manage CPU utilization needs across multiple operating systems.
As virtualization continues to find its way into data centers, end users are able to benefit with server consolidation and increased drive server utilization. However, in doing so, end users also have to give up power management of those servers. This occurs due to the multiple operating systems making different performance requests to manage the power that the hypervisor must trap and ignore due to the conflicting performance state (PSTATE) requests. For example, consider a server with four active operating systems and an overlying hypervisor. If the first operating system (OS1) requests a first PSTATE (P0), the second operating system (OS2) requests a second PSTATE (P1), the third operating system (OS3) requests a third PSTATE (P2), and the fourth operating system (OS4) requests a fourth PSTATE (P3), the hypervisor must decide what to do with these disparate PSTATE requests. Due to these conflicts, the hypervisor will typically ignore the OS requests and run the machine in the top PSTATE (P0) at all times. This approach, however, can significantly negate some of the positive gains of consolidation and virtualization, particularly where power management is concerned.
Because of these difficulties in managing performance state requests from multiple operating systems running underneath a hypervisor, it has been proposed that the BIOS (basic input output system) for the information handling system operate to control the performance states for the CPU based upon information obtained from the underlying hardware. This BIOS approach, however, can suffer from a disconnect from the performance needs and results of the operating systems running on the system.
FIG. 1A (Prior Art) is a block diagram of a prior system for managing performance states for an information handling system 100. The information handling system 100 includes hardware 104 and BIOS (basic input output system) 102. The hardware 104 can include, for example, a CPU (central processing unit) 106 and a fan 108, but other hardware devices can also be provided within the system 100. The information handling system 100 can also include a hypervisor 110 that operates to provide an interface between a plurality of operating systems (OS1, OS2, . . . OS(N)) 112, 114 . . . 116 and the system BIOS 102 and hardware 104. It is further noted that the system 100 can include multiple CPUs and/or multiple fans, as desired, and each CPU can further include one or more processing cores or threads.
The information handling system 100 uses power as it operates. To reduce this power usage, the CPU 106 can be run in lower performance states, and the fan can be run at lower speeds. The performance state for the CPU and the speed for the fan can be controlled by a power control signals 124 provided by the BIOS 102. The performance state for the CPU 106 typically needs to be fast enough to meet the user processing needs for the CPU 106. To determine the utilization of the CPU 106 by the system 100, the BIOS 102 can issue a system management interrupt (SMI) 122 to the CPU 106 and obtain CPU utilization data 120 from the CPU 106. Using this information, the BIOS 102 can set a desired performance state for the CPU 106 through the power control signals 124. It is also noted that the fan speed can be set using temperature readings from temperature sensors within the system 100, if desired.
FIG. 1B (Prior Art) is a process flow diagram for the system of FIG. 1A (Prior Art). In the process 150 depicted, utilization data is obtained in block 152 by the BIOS. And in block 154, the CPU performance state is set by the BIOS based upon an analysis of the utilization data. The utilization data can include information such as the CPU load that can be obtained from the CPU 106 through an SMI request.
Unfortunately, these prior techniques for controlling the performance states of CPUs within a system can lead to inefficient and ineffective changes to the performance states. The CPU utilization values can also be inaccurately interpreted since a CPU may report itself as busy even though it is actually busy waiting for the data from memory or any I/O (input/output) device before it can proceed with the number crunching.